/**
 * 系统信息管理工具
 * 用于处理跨平台兼容性，特别是微信小程序的适配
 */

// 全局系统信息
let systemInfo = {
  statusBarHeight: 0,
  menuButtonInfo: {},
  headerHeight: 44,
  safeAreaInsets: {
    top: 0,
    bottom: 0,
    left: 0,
    right: 0
  },
  platform: '',
  isMP: false,
  isMPWeixin: false
};

/**
 * 初始化系统信息
 * 应在App.vue的onLaunch中调用
 */
export function initSystemInfo() {
  try {
    // 获取系统信息
    const info = uni.getSystemInfoSync();
    
    systemInfo.statusBarHeight = info.statusBarHeight || 0;
    systemInfo.platform = info.platform || '';
    systemInfo.safeAreaInsets = info.safeAreaInsets || systemInfo.safeAreaInsets;
    
    // 判断是否为小程序环境
    // #ifdef MP
    systemInfo.isMP = true;
    // #endif
    
    // 微信小程序特殊处理
    // #ifdef MP-WEIXIN
    systemInfo.isMPWeixin = true;
    
    // 获取胶囊按钮信息
    const menuButton = uni.getMenuButtonBoundingClientRect();
    systemInfo.menuButtonInfo = menuButton;
    
    // 计算自定义头部高度
    // 胶囊按钮高度 + 胶囊按钮距离顶部的距离 + 胶囊按钮距离底部的距离
    systemInfo.headerHeight = (menuButton.top - systemInfo.statusBarHeight) * 2 + menuButton.height;
    // #endif
    
    // 非微信小程序使用默认高度
    // #ifndef MP-WEIXIN
    systemInfo.headerHeight = 44;
    // #endif
    
    console.log('系统信息初始化完成:', systemInfo);
  } catch (error) {
    console.error('系统信息初始化失败:', error);
  }
}

/**
 * 获取系统信息
 */
export function getSystemInfo() {
  return systemInfo;
}

/**
 * 获取状态栏高度
 */
export function getStatusBarHeight() {
  return systemInfo.statusBarHeight;
}

/**
 * 获取头部高度
 */
export function getHeaderHeight() {
  return systemInfo.headerHeight;
}

/**
 * 获取胶囊按钮信息
 */
export function getMenuButtonInfo() {
  return systemInfo.menuButtonInfo;
}

/**
 * 获取安全区域信息
 */
export function getSafeAreaInsets() {
  return systemInfo.safeAreaInsets;
}

/**
 * 是否为微信小程序
 */
export function isMPWeixin() {
  return systemInfo.isMPWeixin;
}

/**
 * 是否为小程序环境
 */
export function isMP() {
  return systemInfo.isMP;
}

/**
 * 获取关闭按钮样式（微信小程序适配）
 */
export function getCloseButtonStyle() {
  if (systemInfo.isMPWeixin && systemInfo.menuButtonInfo.top) {
    return {
      marginTop: (systemInfo.menuButtonInfo.top - systemInfo.statusBarHeight) + 'px'
    };
  }
  return {};
}

/**
 * 获取自定义导航栏样式
 */
export function getCustomNavBarStyle() {
  return {
    height: systemInfo.headerHeight + 'px',
    paddingTop: systemInfo.statusBarHeight + 'px'
  };
}

/**
 * 获取页面容器样式（考虑安全区域）
 */
export function getPageContainerStyle() {
  return {
    paddingTop: (systemInfo.statusBarHeight + systemInfo.headerHeight) + 'px',
    paddingBottom: systemInfo.safeAreaInsets.bottom + 'px'
  };
}